Gradle 的核心是由 Java 實作,但為了提供更好擴充的語法,Gradle 一開始使用 Groovy 實作 DSL 語法,讓開發者能用簡潔及具語義的程式碼來寫 Build Script。隨著 Kotlin 的推出與熱門,開發者也發現 Kotlin 在實作 DSL 上的方便與潛力。因此 Gradle 從 5.0 以後又用 Kotlin 實作 DSL 層,讓 Kotlin 開發者可以用原本就熟悉的語法來寫 Build Script,IDE 的語法提示、自動完成與偵錯也更好實作。
許多人常問為什麼要用 Gradle Kotlin DSL 呢?這邊可以跟大家分享一下:
Gradle 提供數個內建 Plugin,在專案裡套用這些 Plugin 的方法就是在 Build Script 上指定 Plugin 的 id
,不需要寫版本號。常見的例子像是 application
、java
、jacoco
。以 Groovy DSL 套用 jacoco Plugin 的寫法如下:
plugins {
id 'jacoco'
}
不過 Kotlin DSL 用 property extension 的方式讓這個語法更精簡成:
plugins {
jacoco
}
用這種方式來宣告 Plugin 的好處就是假如您加了一個不存在的 Plugin 或打錯字的話,IDE 會直接以語法錯誤來提醒您修正。